Skip to content

docs(cli): rename the spec off axe vrs, hold the wire contract and the id space - #5

Merged
schickling merged 1 commit into
mainfrom
schickling-assistant/2026-08-08-intent-cli-rename
Aug 9, 2026
Merged

docs(cli): rename the spec off axe vrs, hold the wire contract and the id space#5
schickling merged 1 commit into
mainfrom
schickling-assistant/2026-08-08-intent-cli-rename

Conversation

@schickling-assistant

@schickling-assistant schickling-assistant commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

context/cli/spec.md was extracted from a repository where this tool was a subcommand called axe vrs. It is its own binary called intent now, and the document had not moved — 25 of its invocations named a command no reader can run. This is the spec half of that rename.

Read this before approving: the document pair is inconsistent after this change

This PR renames spec.md and deliberately does not touch context/cli/requirements.md, which is its other half. Until a second change lands, the two documents disagree:

spec.md (this PR) requirements.md (unchanged)
invocations intent check, 25 renamed axe vrs check, 14 still unrenamed
prose Axe gone, 11 reworded 10 Axe mentions remain
requirement ids AXE.VRS-R (1 citation, left alone) AXE.VRS-R (19 definitions, left alone)

That inconsistency is created by this PR and is the price of splitting the pass. It is stated here rather than discovered later. The id row is the one thing that is not inconsistent — see below for why that was the point.

What changed — counted, spec.md only

population pattern before after
command invocations axe vrs 25 0
prose mentions Axe / non-Axe 11 0

35 lines, one file. No reindentation and nothing moved.

The eight held sites are provably untouched

held population count before count after
schema_version values axe.vrs.*.vN 7 7
placeholder <axe-vrs-check-json> 1 1

Diffed verbatim against the base commit, line numbers included — identical. These are parsed by consumers rather than read by humans, so renaming them turns a documentation change into a silent breaking change. One points the other way from the rest: it is produced by an external review backend and only validated here, so moving it unilaterally breaks this tool rather than its consumers.

Why the requirement ids are not renamed

The AXE.VRS-R* population spans both documents — 19 definitions in requirements.md, one citation in spec.md:238 at the graph-extraction example. Renaming only the citation, the single one in the file this PR touches, would leave it naming a requirement that does not exist — which VRS.REQ-R09 (atomic consistency) forbids within a commit. So the id space is left uniformly at AXE.VRS-R and this PR introduces no id inconsistency at all.

That also keeps skills/intent.md's statement that those ids are held stable true as written, so it correctly needs no edit here.

For whoever picks that up: the form the corpus's own rule points at is INTENT.CLI-Rnn. intent/02-requirements/spec.md mandates a <PROJECT>.<NODE> semantic namespace — its own examples are VRS, VRS.REQ, CVG.ACT — which is the shape AXE.VRS already had. (REQ-R01 looks like evidence for a flat prefix but is synthetic fixture content under 15-evaluation, not house style.) The atomic unit is the 19 definitions, the citation at spec.md:238, and the skills/intent.md sentence.

One reworded line is a judgement, not a rename

Worth a reviewer's eye:

Do not create a competing top-level vrs CLI until there is evidence that non-Axe users need one separate from intent.

The extraction removed this anti-goal's premise — this is the top-level CLI now, so a mechanical rename produces "non-Intent users", which parses as nothing. The rewording keeps the anti-goal against a second CLI and drops the dead condition. Restating the tradeoff behind it is a requirements decision rather than a rename, so it is flagged rather than made.

Same category, in requirements.md and therefore untouched: T01 Axe subcommand over top-level CLI records a choice that has since been reversed, and its justification cannot survive any rename. It needs a decision, not a substitution.

Verification — and why CI is not it

CI's corpus gate runs intent check intent and never reads context/, so a green run says nothing about this diff. Please do not read the green ticks as review of these changes.

What was actually run — the checker built from this repo, over context/, before and after, in place:

intent check context --profile local     # identical diagnostics before and after
intent graph  context --json             # 34 nodes — confirms it read these files

Zero diagnostics introduced or removed. The four remaining warnings are pre-existing broken links in requirements.md, untouched here. (Baselining this by copying context/ elsewhere does not work — it breaks the ../../intent/ relative links and invents warnings. It has to be done in place.)

Found while measuring, not fixed

  • spec.md:63 states the default path is context/vrs; context/vrs appears 8 times. The corpus is at intent/ in this repository. This is a documented default value rather than prose, so it is left alone — but it is a larger correctness hole than anything renamed above.
  • Seven Authority-Routing rows (spec.md:75–81) say vrs check, vrs graph, … without the axe prefix, so they describe a nonexistent command exactly as the invocations did. Held for a separate commit to keep the counts above independently auditable.
  • Four broken links in requirements.md../requirements.md, ../../../vrs/16-enforcement/, ../../../vrs/, ../../22-invocation-contract/requirements.md. spec.md had its links repointed at extraction; requirements.md did not.
  • Six AXE.VRS-R citations outside context/cli that the id rename will need to move with it: crates/intent/README.md (2), crates/intent/tests/vrs_check.rs (3, fixture content — renaming the docs does not break these tests), skills/intent.md (1). When the id rename lands, spec.md:238's example and tests/vrs_check.rs:173 will illustrate the same thing with different ids — cosmetic, but worth knowing.

Draft, and not to be merged by me.

Posted on behalf of @schickling
field value
agent_name unknown
agent_tool Claude Code
agent_tool_version 2.1.220
agent_runtime Claude Code 2.1.220
agent_session_lookup unavailable
tooling_profile dotfiles@unknown-dirty

`context/cli/spec.md` was extracted from a repository where this tool was a
subcommand called `axe vrs`. It is now its own binary called `intent`, and the
document had not moved: 25 of its invocations named a command no reader can run.

Renamed in this commit, spec.md only:

    axe vrs <sub>  ->  intent <sub>     25 sites  (25 -> 0)
    Axe / non-Axe  ->  reworded          11 sites  (11 -> 0)

The eight wire-contract sites are deliberately untouched and verified byte-identical
to the previous commit, line numbers included: the seven `axe.vrs.*.vN`
`schema_version` values and the one `<axe-vrs-check-json>` placeholder. Those are
parsed by consumers rather than read by humans, so renaming them would convert a
documentation change into a silent breaking change. One of them points the other way
from the rest — it is produced by an external review backend and only validated here,
so moving it unilaterally would break this tool rather than its consumers.

Two things are held back on purpose.

**The requirement ids are not renamed.** The `AXE.VRS-R*` population spans both
documents — 19 definitions in `requirements.md` and one citation here, at the graph
extraction example. Renaming only the citation would leave it naming a requirement
that does not exist, which `VRS.REQ-R09` forbids in the same commit. The id space is
left uniformly at `AXE.VRS-R`, so `skills/intent.md`'s statement that those ids are
held stable remains true. `requirements.md` is untouched in this commit.

**One reworded line is a judgement, not a rename**, and is worth a reviewer's eye.
The anti-goal "do not create a competing top-level `vrs` CLI until there is evidence
that non-Axe users need it" had its premise removed by the extraction — this *is* the
top-level CLI now. It reads "users need one separate from `intent`", preserving the
anti-goal against a second CLI while dropping a condition that no longer parses.
Restating the tradeoff behind it would be a requirements decision rather than a
rename, so it is flagged rather than made.

Verified by running the checker over `context/` before and after, in place: identical
diagnostics, none introduced or removed. The four remaining warnings are pre-existing
broken links in `requirements.md`, which this commit does not touch. Note that CI's
corpus gate runs `intent check intent` and never reads `context/`, so a green run says
nothing about this diff.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
agent-tool: Claude Code
agent-tool-version: 2.1.220
agent-runtime: Claude Code 2.1.220
agent-session-lookup: unavailable
tooling-profile: dotfiles@unknown-dirty
@schickling
schickling marked this pull request as ready for review August 9, 2026 08:28
@schickling
schickling merged commit 4e9d771 into main Aug 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants